Synthetic Testing

What is Synthetic Testing?

Synthetic Testing and Synthetic Monitoring are terms often used interchangeably. Synthetic testing and synthetic monitoring, while related, are not identical practices.

Synthetic testing involves the creation of simulated transactions or interactions with an application to evaluate its performance and functionality. Usually, scripted tests are conducted in controlled environments to mimic user behaviors such as logins or form submissions. The primary aim is to proactively identify potential performance issues before applications or platforms are deployed.

On the other hand, synthetic monitoring is a continuous process, often used in production, that uses automated scripts or tools to simulate user interactions, periodically assessing an application's response time, uptime, and functionality from various locations and networks. It provides real-time insights into the end-user experience and helps quickly detect issues like downtime or slow page loads, enabling prompt corrective action. Synthetic monitoring can test systems when there are no real users using systems and as such can sometimes detect issues before real users are impacted.

In summary, synthetic testing is a specific testing method, whereas synthetic monitoring encompasses ongoing efforts to monitor and ensure an application's availability and performance.


Synthetic Testing vs Synthetic Monitoring vs Real User Monitoring

Organizations with a proactive monitoring strategy usually adopt Real User Monitoring (RUM) alongside Synthetic Testing and Synthetic Monitoring.

For more information on the nuances of these approaches, please see:


Synthetic Testing is different to Synthetic Monitoring

Load testing is a prime example of when synthetic testing diverges from synthetic monitoring. In load testing, synthetic transactions simulate concurrent user interactions to assess an application's performance under varying workloads. This process aims to identify system limitations, bottlenecks, or potential failures during peak usage. Load testing is great at answering questions such as - “Can my web application support 500 users with acceptable performance?”. Load testing is typically performed in staging environments, or during maintenance periods in production environments.

Synthetic Monitoring on the other hand would typically involve a robot user periodically using a production system in real-time in a manner akin to real users and usually alongside real users. Synthetic monitoring is used in pre-production staging environments.

Stress Testing is another methodology that can fall within the remit of Synthetic Testing but would be considered outside of the domain of synthetic monitoring.


Popular Synthetic testing frameworks

This article has talked about synthetic testing widely using scripts to simulate users and their interaction. In practice, modern organizations using synthetic testing widely, will leverage tools and frameworks to automate the creation and running of such scripts. Often GUI tools will be used to record a user interaction or behavior and similar tools will be used to replay that behavior at scale.

Several synthetic testing frameworks are widely used for simulating user interactions, assessing performance, and identifying potential issues in applications. Some popular synthetic testing frameworks include:

  • Selenium: A widely-used open-source framework for automating web browsers, supporting multiple programming languages. Our own eG Enterprise Web App Simulator is Selenium based, see: Synthetic Monitoring Tools for Multi-step Web Transactions (eginnovations.com).
  • JMeter: An Apache project that provides an open-source framework for performance testing and load testing of applications. We have an article on JMeter and how to leverage it in conjunction with APM tooling, see: How APM Solutions Enhance JMeter Load Testing Visibility (eginnovations.com).
  • LoadRunner: A performance testing tool from Micro Focus that supports various protocols for simulating user interactions.
  • K6: An open-source load testing tool that is scriptable and written in Go. K6 is popular with Developers, QA Engineers, and DevOps who use K6 for testing the performance of APIs, microservices, and websites
  • Neoload: A commercial performance testing tool that supports various protocols and environments.

These frameworks offer different features, support various protocols, and cater to diverse testing needs. The choice of a synthetic testing framework often depends on factors such as the type of application, testing requirements, and the preferred programming language or scripting capability.